package com.zjsru.oneDay202205;

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Queue;

/**
 * @Author: likew
 * @Date: 2022/5/28
 * 删除最外层的括号
 * 输入：s = "(()())(())"
 * 输出："()()()"
 * 解释：
 * 输入字符串为 "(()())(())"，原语化分解得到 "(()())" + "(())"，
 * 删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。
 *
 * 输入：s = "(()())(())(()(()))"
 * 输出："()()()()(())"
 * 解释：
 * 输入字符串为 "(()())(())(()(()))"，原语化分解得到 "(()())" + "(())" + "(()(()))"，
 * 删除每个部分中的最外层括号后得到 "()()" + "()" + "()(())" = "()()()()(())"。
 *
 */
public class removeOuterParentheses {
    /**
     * 栈进出
     * */
//    public String removeOuterParentheses(String s) {
//        Deque<Character> deque = new ArrayDeque<>();
//        StringBuffer sb = new StringBuffer();
//        for (int i = 0; i < s.length(); i++) {
//            if(s.charAt(i) == ')'){
//                deque.pop();
//            }
//            if(!deque.isEmpty()){
//                sb.append(s.charAt(i));
//            }
//            if(s.charAt(i) =='('){
//                deque.push(s.charAt(i));
//            }
//        }
//        return sb.toString();
//    }
    /**
     *
     * 计数法
     * */
    public String removeOuterParentheses(String s) {
        StringBuffer sb = new StringBuffer();
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == ')'){
                count++;
            }
            if(count != 0){
                sb.append(s.charAt(i));
            }
            if(s.charAt(i) == '('){
                count--;
            }
        }
        return sb.toString();
    }
    public static void main(String[] args) {
        removeOuterParentheses removeOuterParentheses = new removeOuterParentheses();
        String s = "(()())(())";
        System.out.println(removeOuterParentheses.removeOuterParentheses(s));
    }
}
